package com.example.profile_encryption.common;

import com.example.profile_encryption.common.CustomizeResultCode;
import lombok.AllArgsConstructor;

@AllArgsConstructor
public enum ResultCode  implements CustomizeResultCode {

    SUCCESS(200, "成功"),
    /* 默认失败*/
    COMMON_FAIL(600,  "失败"),

    /*参数错误 1000 - 1999 */
    PARAM_NOT_VALID(1001, "参数无效"),
    PARAM_IS_BLANK(1002,"参数为空"),
    PARAM_TYPE_ERROR(1003,"参数类型错误"),
    PARAM_NOT_COMPLETE(1004,"参数缺失"),


    /* 用户错误 */
    USER_NOT_LOGIN(2001,"用户未登录"),
    USER_ACCOUNT_EXPIRED(2002,"账号已过期"),
    USER_CREDENTIALS_ERROR(2003,"密码错误"),
    USER_CREDENTIALS_EXPIRED(2004,"密码过期"),
    USER_ACCOUNT_DISABLE(2005,"账号不可用"),
    USER_ACCOUNT_LOCKED(2006,"账号被锁定"),
    USER_ACCOUNT_NOT_EXIST(2007,"账号不存在"),
    USER_ACCOUNT_ALREADY_EXIST(2008,"账号已在"),
    USER_ACCOUNT_USER_BY_OTHERS(2009,"您的登陆已经超时或者已经在另一台机器登陆，您被迫下线"),
    USER_SESSION_INVALID(2010,"登陆已经超时"),
    USER_ACCOUNT_EMPTY(2011,"用户名不能为空"),
    USER_UPDATE_REPETITION_PASSWORD(2012,"用户新密码和旧密码一样"),
    USER_JWT_TOKEN_ERROR(2013,"jwt token无效"),

    /*业务错误*/
    NO_PERMISSION(4001,"没有权限"),


    /*运行时异常*/
    ARITHMETIC_EXCEPTION(9001,"算数异常"),
    NULL_POINTER_EXCEPTION(9002,"空指针异常"),
    ARRAY_INDEX_OUTOfBOUNDS_EXCEPTION(9003,"数组越界");


    private final Integer code;
    private final String message;

    @Override
    public Integer getCode() {
        return code;
    }

    @Override
    public String getMessage() {
        return message;
    }

}
